package com.bsg.upm.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.bsg.upm.entity.PortEntity;

/**
 * 端口接口
 * 
 * @author HCK
 *
 */
public interface PortDao extends CrudDao<PortEntity> {

	/**
	 * 获取指定站点和端口值集合的端口信息
	 * 
	 * @param siteId
	 *            站点编码
	 * @param portValues
	 *            端口值集合
	 * @return 端口信息集合
	 */
	List<PortEntity> listBySiteIdAndPortValues(@Param("siteId") String siteId, @Param("portValues") int[] portValues);

	/**
	 * 获取未使用的端口集合
	 * 
	 * @param siteId
	 *            所属站点
	 * @return 未使用的端口集合
	 */
	List<PortEntity> listUnused(String siteId);

	/**
	 * 端口批量插入
	 * 
	 * @param ports
	 *            端口集合
	 * @return 插入条数
	 */
	int batchInsert(List<PortEntity> ports);

	/**
	 * 获取指定站点的端口个数
	 * 
	 * @param siteId
	 *            站点编码
	 * @return 端口个数
	 */
	int countBySiteId(String siteId);

	/**
	 * 获取端口个数
	 * 
	 * @param siteId
	 *            站点编码
	 * @param startPort
	 *            起始端口号
	 * @param endPort
	 *            结束端口号
	 * @return 端口个数
	 */
	int countPort(@Param("siteId") String siteId, @Param("startPort") int startPort, @Param("endPort") int endPort);

	/**
	 * 更新端口可用状态
	 * 
	 * @param port
	 *            端口对象
	 * @return 更新数据条数
	 */
	int updateEnabled(PortEntity port);

	/**
	 * 将端口更新未使用状态
	 * 
	 * @param port
	 *            端口对象
	 * @return 更新数据条数
	 */
	int updatePortToUsed(PortEntity port);

	/**
	 * 将端口更新为未使用状态
	 * 
	 * @param port
	 *            端口对象
	 * @return 更新数据条数
	 */
	int updatePortToUnused(PortEntity port);

}
